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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

受付中

QTableView の カラム幅をドラッグなど手動で自由に変更したい

goki_gottan
goki_gottan

総合スコア98

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0回答

0評価

0クリップ

41閲覧

投稿2022/06/23 00:56

SQliteでデータを受け取り、Pandasで処理しております。
そのデータをオートコンプリート機能でTableViewにコンボボックスとして埋め込みしております。
さらに、TableViewにボタンも埋め込みしておりますが、
今回は趣旨と異なるため省力いたします。

下記TableViewで作成されたGUIを、表示上で、
カラム幅を自由に変えたいです。(また、できましたらヘッダーも表示上で任意に変更したく思います。こちらは別途相談でも構いません)
(また、グリッドもうまく使用できておらず、ボタンが大きくなったり、テキストボックスもうまくいっておりません。
こちらは趣旨とは異なりますが・・・)

import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import * import pandas as pd import sqlite3 df = pd.read_csv("●●") num1=len(df.columns) num2=len(df) df=df.fillna("-") df_1=df.columns.to_list()[1:] class LoadTable(QtWidgets.QTableWidget): def __init__(self, parent=None): super(LoadTable, self).__init__(1, num1-1+5, parent) self.setFont(QtGui.QFont("Helvetica", 10, QtGui.QFont.Normal, italic=False)) headertitle = ["No","","","",""] + df_1 self.setHorizontalHeaderLabels(headertitle) self.verticalHeader().hide() self.horizontalHeader().setHighlightSections(False) self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed) # ============================================================================= # header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch) # header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) # header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) # # ============================================================================= self.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) self.setColumnWidth(0, 130) def add_image1(self): pass def add_document(self): pass for a in range(num1-1+5): if a==0: self.setItem(a,0,QTableWidgetItem(str(0))) if a==1: self.add_button10 = QtWidgets.QPushButton("●") self.add_button10.clicked.connect(add_image1) self.setCellWidget(0, a, self.add_button10) if a==3: self.add_button11 = QtWidgets.QPushButton("●") self.add_button11.clicked.connect(add_document) self.setCellWidget(0, a, self.add_button11) if a >4 : completer = QCompleter(df[df_1[a-5]].to_list()) self.lineedit = QtWidgets.QLineEdit(self) self.lineedit.setCompleter(completer) self.setCellWidget(0, a, self.lineedit) def _addrow(self): rowcount = self.rowCount() self.insertRow(rowcount) self.lineedit = QtWidgets.QLineEdit(self) def add_image1(self): pass def add_document(self): pass for a in range(num1-1+5): if a==0: self.setItem(rowcount,0,QTableWidgetItem(str(rowcount))) if a==1: self.add_button10 = QtWidgets.QPushButton("●") self.add_button10.clicked.connect(add_image1) self.setCellWidget(rowcount, a, self.add_button10) if a==3: self.add_button11 = QtWidgets.QPushButton("●") self.add_button11.clicked.connect(add_document) self.setCellWidget(rowcount, a, self.add_button11) if a >4 : completer = QCompleter(df[df_1[a-5]].to_list()) self.lineedit = QtWidgets.QLineEdit(self) self.lineedit.setCompleter(completer) self.setCellWidget(rowcount, a, self.lineedit) def _addcolumn(self): rowcount = self.columnCount() self.insertColumn(rowcount) self.lineedit = QtWidgets.QLineEdit(self) self.lineedit.setCompleter(completer) def _removecolumn(self): if self.columnCount() > 0: self.removeColumn(self.columnCount()-1) def _removerow(self): if self.rowCount() > 0: self.removeRow(self.rowCount()-1) class ThirdTabLoads(QtWidgets.QWidget): def __init__(self, parent=None): super(ThirdTabLoads, self).__init__(parent) table = LoadTable() grid = QGridLayout() grid.setSpacing(10) title1 = QtWidgets.QLabel('DataBase_Path') grid.addWidget(title1, 1, 0) title2 = QtWidgets.QLabel('DataBase_Name') grid.addWidget(title2, 2, 0) title2 = QtWidgets.QLabel('DataBase_Table') grid.addWidget(title2, 3, 0) add_button1 = QtWidgets.QPushButton("Add_Row") add_button1.clicked.connect(table._addrow) grid.addWidget(add_button1, 30, 0,1,1) grid.setColumnStretch(1, 1) add_button2 = QtWidgets.QPushButton("Add_Column") add_button2.clicked.connect(table._addcolumn) grid.addWidget(add_button2, 30, 1,1,1) grid.setColumnStretch(1, 1) delete_button = QtWidgets.QPushButton("Delete_Row") delete_button.clicked.connect(table._removerow) grid.addWidget(delete_button, 30, 2,1,1) grid.setColumnStretch(1, 1) delete_button1 = QtWidgets.QPushButton("Delete_Column") delete_button1.clicked.connect(table._removecolumn) grid.addWidget(delete_button1, 30, 3,1,1) grid.setColumnStretch(1, 1) add_img_button2 = QtWidgets.QPushButton("Add_DataBase") add_img_button2.clicked.connect(table._removecolumn) grid.addWidget(add_img_button2, 1, 3,1,1) tablehbox = QtWidgets.QHBoxLayout() tablehbox.setContentsMargins(10, 10, 10, 10) tablehbox.addWidget(table) grid.addLayout(tablehbox, 4,0,1,100) textbox1 = QLineEdit(self) grid.addWidget(textbox1, 1, 1) textbox2 = QLineEdit(self) grid.addWidget(textbox2, 2, 1,1,1) textbox3 = QLineEdit(self) grid.addWidget(textbox3, 3, 1,1,1) button1 = QtWidgets.QPushButton('削除') button1.clicked.connect(self.clickCallback) grid.addWidget(button1, 31, 0) self.setLayout(grid) def clickCallback(self): global conn self.close() QApplication.quit() app.exec_() return if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) w = ThirdTabLoads() w.show() sys.exit(app.exec_())

何卒、宜しくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。