Ich verwende PyQt4. Ich habe einen QPushButton und jetzt möchte ich es wiederholen. Ein Klick auf die Schaltfläche sollte Daten aus der CSV-Datei in QTableWidget laden. Aber ich möchte nur jeweils einen Fall anzeigen.Iterate QPushButton
Zum Beispiel hat csv 1000 Zeilen ohne Header. Jetzt sollte Kopfzeile dem Tabellen-Widget aus dem Header zugewiesen werden. und nur eine Zeile darunter anzeigen. Beim Klicken sollte die nächste Zeileninformation in derselben Zeile angezeigt werden. Ich poste den Code unten mit wenig unterschiedlicher Syntax. Ich habe die Syntax von db für den Header angezeigt, den ich auch ausschließen möchte.
Ich habe .ui-Datei hinzugefügt. Sie können es direkt als .ui sparen:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>remarks</class>
<widget class="QMainWindow" name="remarks">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1073</width>
<height>862</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QComboBox" name="compcb">
<property name="geometry">
<rect>
<x>60</x>
<y>360</y>
<width>131</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="loccb">
<property name="geometry">
<rect>
<x>60</x>
<y>410</y>
<width>131</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="rescb">
<property name="geometry">
<rect>
<x>60</x>
<y>460</y>
<width>131</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="lat">
<property name="geometry">
<rect>
<x>60</x>
<y>540</y>
<width>113</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="lon">
<property name="geometry">
<rect>
<x>60</x>
<y>590</y>
<width>113</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="landmark">
<property name="geometry">
<rect>
<x>330</x>
<y>360</y>
<width>113</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QPlainTextEdit" name="sugges">
<property name="geometry">
<rect>
<x>330</x>
<y>410</y>
<width>121</width>
<height>78</height>
</rect>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_2">
<property name="geometry">
<rect>
<x>330</x>
<y>510</y>
<width>121</width>
<height>78</height>
</rect>
</property>
</widget>
<widget class="QTableWidget" name="tableWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>991</width>
<height>311</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="submit">
<property name="geometry">
<rect>
<x>350</x>
<y>670</y>
<width>99</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Submit</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1073</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtCore import QString
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import MySQLdb
import os
import time
import sys
import csv
### Loading .UI file ###
rts_class = uic.loadUiType("main.ui")[0]
class Mainwindow(QtGui.QMainWindow, rts_class):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
#self.review.clicked.connect(self, review_application)
self.submit.clicked.connect(self.submit_application)
#self.quit.clicked.connect(self, quit_application
self.load_db()
self.checkbox()
def load_db(self):
self.dadis.setRowCount(1)
self.dadis.setColumnCount(headlen)
self.dadis.setHorizontalHeaderLabels(QString('%s' % ', '.join(map(str, mainheader))).split(","))
if os.path.isfile("RTS.csv") is True:
with open('RTS.csv', 'r') as fo:
reader = csv.reader(fo, delimiter = ',')
ncol = len(next(reader))
data = list(reader)
row_count = len(data)
print row_count
main = data[0]
print main
for var in range(0, ncol):
self.dadis.setItem(0, var, QTableWidgetItem(main[var]))
fo.close()
def checkbox(self):
self.compcb.addItem(" ")
self.compcb.addItem("Complete")
self.compcb.addItem("InComplete")
self.loccb.addItem(" ")
self.loccb.addItem("Locatable")
self.loccb.addItem("UnLocatable")
self.rescb.addItem(" ")
self.rescb.addItem("House")
self.rescb.addItem("Street")
self.rescb.addItem("Colony")
self.rescb.addItem("Society")
def submit_application(self):
compout = self.compcb.currentText()
locout = self.loccb.currentText()
resout = self.rescb.currentText()
lattxt = self.lat.text()
lontxt = self.lon.text()
landtxt = self.landmark.text()
suggestxt = self.sugges.toPlainText()
remarkstxt = self.remarks.toPlainText()
print compout
print locout
print resout
print lattxt
print lontxt
print landtxt
print suggestxt
print remarkstxt
if os.path.isfile("rts_output.csv") is False:
with open('rts_output.csv', 'a') as fp:
b = csv.writer(fp, delimiter = ',')
header = [["COMPLETENESS", "LOCATABLE", "RESOLUTION", "GEO_LAT", "GEO_LON", "LANDMARK", "SUGGESTION", "REMARKS"]]
b.writerows(header)
if os.path.isfile("rts_output.csv") is True:
with open('rts_output.csv', 'a') as fp:
a = csv.writer(fp, delimiter = ',')
data = [[compout, locout, resout, lattxt, lontxt, landtxt, suggestxt, remarkstxt]]
a.writerows(data)
if os.path.isfile("RTS.csv") is True:
with open('RTS.csv', 'r') as fo:
reader = csv.reader(fo, delimiter = ',')
ncol = len(next(reader))
data = list(reader)
row_count = len(data)
x = data[0][0]
print x
i = int(x)+1
print i
if i <= row_count:
main = data[i-1]
print main
#for var in range(0, ncol):
#self.dadis.setItem(0, var, QTableWidgetItem(main[var]))
fo.close()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
myMain = Mainwindow()
myMain.show()
sys.exit(app.exec_())
Bitte posten Sie die main.ui, so dass wir dies ausführen können (sieht aus wie nur kleinere Änderungen erforderlich, um es unabhängig von MySQL zu machen). – Schollii
Wird die main.ui hinzufügen, aber der Punkt ist Wie man die Schaltfläche iteriert? Wenn ich klicke, sollte ein neuer Fall kommen, weil ich nur eine Zeile aus kompletten CSV-Zeilen anzeigen möchte und beim Klicken auf nächste Zeile wechseln soll: P –
@Schollii main.ui hinzugefügt und ... es ist nicht primär, um unabhängig zu machen von mysql ... es ist es zu iterieren, um einzelne Spalte in Tabelle Widget anzuzeigen und beim Klicken laden nur eine Zeile in die gleiche Zeile Ort: P –