質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1160閲覧

PyQt5でtabwidgets上に複数のボタンを配置したい

oosan1

総合スコア3

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/08/09 04:06

PyQt5でtabwidgets上に複数のボタンを配置したい

PyQt5でtabwidgetsに複数のボタンを配置したいのですが、書き方が分かりません。

######したいこと
・同じタブ上に複数のボタンを配置したい

該当のソースコード

python3

1import sys 2from PyQt5.QtCore import * 3from PyQt5.QtWidgets import * 4import sip 5import subprocess 6 7class MainWindow(QWidget): 8 def __init__(self, parent=None): 9 10 super(MainWindow, self).__init__(parent) 11 12 layout = QGridLayout() 13 self.setLayout(layout) 14 15 16 # 横のレイアウト 17 self.horizon = QHBoxLayout() 18 # 縦のレイアウト 19 self.vertical = QVBoxLayout() 20 21 22 button = QPushButton('blender', self) 23 button.clicked.connect(self.output) 24 25 button2 = QPushButton("minecraft", self) 26 button2.clicked.connect(self.output2) 27 28 button3 = QPushButton("test", self) 29 button3.clicked.connect(self.output3) 30 31 tabwidget = QTabWidget() 32 tabwidget.addTab(button, "Tab 1") #この"Tab 1"にbuttonとbutton3を配置したい 33 tabwidget.addTab(button2, "Tab 2") 34 layout.addWidget(tabwidget, 0, 0) 35 36 self.horizon.addLayout(self.vertical) 37 self.setLayout(self.horizon) 38 39 self.setGeometry(300, 50, 400, 350) 40 self.setWindowTitle('QCheckBox') 41 def output(self): 42 subprocess.Popen(r"D:\Blender 2.93\blender.exe") 43 sys.exit(app.exec_()) 44 def output2(self): 45 subprocess.Popen(r"D:\minecraft\MinecraftLauncher.exe") 46 sys.exit(app.exec_()) 47 def output3(self): 48 pass 49if __name__ == '__main__': 50 app = QApplication(sys.argv) 51 main_window = MainWindow() 52 main_window.show() 53 sys.exit(app.exec_())

###イメージ
https://gyazo.com/470be3e8a7ed45db01c1262951fc6a49

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • QTabWidget に適切な parent を指定する
  • ボタン2つを載せるコンテナとなる widget を作る、レイアウトは QHBoxLayout
  • addWidget でボタンを横に2つ配置
  • widget を addTab で追加

各ウィジェットの親子関係には注意。

class MainWindow: QWidget layout: QGridLayout tabwidget: QTabWidget tab1: QWidget # コンテナとなるウィジェットを配置 hbox: QHBoxLayout button: QPushButton button3: QPushButton button2: QPushButton # ボタンを直接tabに配置している。 # XXX: self.setLayout(self.horizon) は、 # self.setLayout(layout) と競合。警告メッセージがでます。 # XXX: 現状のコードでは、self.vertical には何も配置されてません。

コードで書くと該当箇所は

python

1tab1 = QWidget(tabwidget) 2hbox = QHBoxLayout(tab1) # 初期化時に指定すると、 3 # 後で tab1.setLayout(hbox) は不要 4hbox.addWidget(button) 5hbox.addWidget(button3) 6tabwidget.addTab(tab1, "Tab1")

質問の内容には影響のない部分ですが、
output, output2 内の sys.exit(app.exec_()) は不要です。

投稿2021/08/09 08:21

teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oosan1

2021/08/09 12:41

回答ありがとうございます。 試してみたらきちんとボタンを二つ配置することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問