Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #52819
| Path | csiph.com!usenet.pasdenom.info!weretis.net!feeder1.news.weretis.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail |
|---|---|
| Return-Path | <phil@riverbankcomputing.com> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.005 |
| X-Spam-Evidence | '*H*': 0.99; '*S*': 0.00; 'else:': 0.03; 'explicitly': 0.05; '-*-': 0.07; 'column': 0.07; 'sys': 0.07; 'utf-8': 0.07; '128': 0.09; 'coding:': 0.09; 'exit': 0.09; 'prevents': 0.09; 'try:': 0.09; 'width': 0.09; 'window.': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'def': 0.12; 'gui': 0.12; 'changes': 0.15; 'windows': 0.15; '**kwargs)': 0.16; '**kwargs):': 0.16; 'buttons,': 0.16; 'dict': 0.16; 'm.show()': 0.16; 'skip:q 30': 0.16; 'spacing': 0.16; 'specifying': 0.16; 'widgets.': 0.16; 'size,': 0.16; 'wrote:': 0.18; 'wed,': 0.18; 'skip:p 40': 0.19; 'import': 0.22; 'aug': 0.22; 'cc:addr:python.org': 0.22; 'header:User-Agent:1': 0.23; 'adds': 0.24; "aren't": 0.24; 'form:': 0.24; 'space.': 0.24; 'text,': 0.24; 'header': 0.24; 'looks': 0.24; 'question': 0.24; 'cc:2**0': 0.24; 'cc:no real name:2**0': 0.24; "i've": 0.25; 'player': 0.26; 'right.': 0.26; 'read,': 0.26; 'skip:_ 20': 0.27; 'header:In- Reply-To:1': 0.27; 'appear': 0.29; 'michael': 0.29; 'skip:p 30': 0.29; 'scale': 0.29; "doesn't": 0.30; "i'm": 0.30; 'work.': 0.31; 'asked': 0.31; 'code': 0.31; 'everywhere': 0.31; 'file:': 0.31; 'horizontal': 0.31; 'received:207.126': 0.31; 'skip:q 20': 0.31; 'skip:s 70': 0.31; 'file': 0.32; 'class': 0.32; 'this.': 0.32; 'running': 0.33; 'table': 0.34; 'skip:_ 10': 0.34; 'subject:with': 0.35; 'basic': 0.35; 'created': 0.35; 'except': 0.35; 'problem.': 0.35; 'skip:s 30': 0.35; 'skip:u 20': 0.35; 'add': 0.35; 'there': 0.35; 'height': 0.36; 'skip:s 60': 0.36; 'doing': 0.36; 'shows': 0.36; "i'll": 0.36; 'should': 0.36; 'two': 0.37; 'list': 0.37; 'arrange': 0.38; 'skip:m 40': 0.38; 'window': 0.38; 'bad': 0.39; 'either': 0.39; 'skip:p 20': 0.39; 'according': 0.40; 'skip:u 10': 0.60; 'tell': 0.60; 'helps': 0.61; 'making': 0.63; 'show': 0.63; 'by:': 0.65; 'to:addr:gmail.com': 0.65; 'media': 0.66; 'here': 0.66; 'side': 0.67; 'bottom': 0.67; 'url:png': 0.68; '20,': 0.68; 'album': 0.68; 'covers': 0.68; 'skip:m 50': 0.68; 'default': 0.69; 'skip:r 30': 0.69; 'websites': 0.72; 'url:i': 0.72; 'hoping': 0.75; 'click': 0.77; 'beside': 0.84; 'phil': 0.84; 'skip:p 80': 0.84; 'song': 0.84; 'subject:Using': 0.84; 'url:imgur': 0.84; 'songs': 0.91; 'children.': 0.93; 'picture': 0.97; '2013': 0.98 |
| X-Virus-Scanned | Debian amavisd-new at rvrbank1.user.openhosting.com |
| MIME-Version | 1.0 |
| Date | Thu, 22 Aug 2013 09:26:17 +0100 |
| From | Phil Thompson <phil@riverbankcomputing.com> |
| To | Michael Staggs <tausciam@gmail.com> |
| Subject | Re: Using PyQT with QT Designer |
| Organization | Riverbank Computing Limited |
| In-Reply-To | <1900623.ob0ITRdHWt@tannhaus-pc> |
| References | <1900623.ob0ITRdHWt@tannhaus-pc> |
| X-Sender | phil@riverbankcomputing.com |
| User-Agent | RoundCube Webmail/0.3.1 |
| Content-Transfer-Encoding | 8bit |
| Content-Type | text/plain; charset=UTF-8 |
| Cc | python-list@python.org |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.15 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.124.1377160367.19984.python-list@python.org> (permalink) |
| Lines | 185 |
| NNTP-Posting-Host | 2001:888:2000:d::a6 |
| X-Trace | 1377160367 news.xs4all.nl 15891 [2001:888:2000:d::a6]:59762 |
| X-Complaints-To | abuse@xs4all.nl |
| Xref | csiph.com comp.lang.python:52819 |
Show key headers only | View raw
On Wed, 21 Aug 2013 21:04:47 -0500, Michael Staggs <tausciam@gmail.com>
wrote:
> I'm learning Python and I have a problem. I've asked the question
> everywhere
> and no one helps me, so I'm hoping someone here will. I am making a
> program
> that shows album covers and you click on the album cover in the top
> window. In
> the bottom window, the list of songs appear and you can click the
> individual
> song to play it. It's going to be a media player for children. I'm
> thinking
> I'll be able to use a dict and have the album as the key and the list of
> songs
> as the value to accomplish this.
>
> Right now, I'm just using my picture directory to try and get the basic
> layout
> right. I designed a form in QT Designer: http://i.imgur.com/Wrp1zHW.png
>
> Here is my gui file I got from running pyuic4 on the ui file:
>
>
> # -*- coding: utf-8 -*-
>
> # Form implementation generated from reading ui file 'window.ui'
> #
> # Created by: PyQt4 UI code generator 4.9.6
> #
> # WARNING! All changes made in this file will be lost!
>
> from PyQt4 import QtCore, QtGui
>
> try:
> _fromUtf8 = QtCore.QString.fromUtf8
> except AttributeError:
> def _fromUtf8(s):
> return s
>
> try:
> _encoding = QtGui.QApplication.UnicodeUTF8
> def _translate(context, text, disambig):
> return QtGui.QApplication.translate(context, text, disambig,
> _encoding)
> except AttributeError:
> def _translate(context, text, disambig):
> return QtGui.QApplication.translate(context, text, disambig)
>
> class Ui_MainWindow(object):
> def setupUi(self, MainWindow):
> MainWindow.setObjectName(_fromUtf8("MainWindow"))
> MainWindow.resize(800, 600)
> self.centralwidget = QtGui.QWidget(MainWindow)
> self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
> self.tableWidget = QtGui.QTableWidget(self.centralwidget)
> self.tableWidget.setGeometry(QtCore.QRect(70, 20, 661, 381))
> self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
> self.tableWidget.setColumnCount(0)
> self.tableWidget.setRowCount(0)
> self.listWidget = QtGui.QListWidget(self.centralwidget)
> self.listWidget.setGeometry(QtCore.QRect(70, 400, 661, 181))
> self.listWidget.setObjectName(_fromUtf8("listWidget"))
> MainWindow.setCentralWidget(self.centralwidget)
>
> self.retranslateUi(MainWindow)
> QtCore.QMetaObject.connectSlotsByName(MainWindow)
>
> def retranslateUi(self, MainWindow):
> MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow",
> None))
>
> Now, according to websites I read, I should just have to add the
following
> to
> my program to get it to use the form:
>
> from window import Ui_MainWindow
> class MainWindow(QMainWindow, Ui_MainWindow):
> def __init__(self, parent=None, **kwargs):
> super(MainWindow, self).__init__(parent)
> self.setupUi(self)
>
> and here is my program:
>
> from PyQt4.QtCore import *
> from PyQt4.QtGui import *
> from window import Ui_MainWindow
>
> THUMBNAIL_SIZE = 128
> SPACING = 10
> IMAGES_PER_ROW = 5
>
> class TableWidget(QTableWidget):
> def __init__(self, parent=None, **kwargs):
> QTableWidget.__init__(self, parent, **kwargs)
>
> self.setIconSize(QSize(128,128))
> self.setColumnCount(IMAGES_PER_ROW)
> self.setGridStyle(Qt.NoPen)
>
> # Set the default column width and hide the header
>
self.verticalHeader().setDefaultSectionSize(THUMBNAIL_SIZE+SPACING)
> self.verticalHeader().hide()
>
> # Set the default row height and hide the header
>
self.horizontalHeader().setDefaultSectionSize(THUMBNAIL_SIZE+SPACING)
> self.horizontalHeader().hide()
>
> # Set the table width to show all images without horizontal
> scrolling
>
self.setMinimumWidth((THUMBNAIL_SIZE+SPACING)*IMAGES_PER_ROW+(SPACING*2))
>
> def addPicture(self, row, col, picturePath):
> item=QTableWidgetItem()
>
> # Scale the image by either height or width and then 'crop' it
to
> the
> # desired size, this prevents distortion of the image.
> p=QPixmap(picturePath)
> if p.height()>p.width(): p=p.scaledToWidth(THUMBNAIL_SIZE)
> else: p=p.scaledToHeight(THUMBNAIL_SIZE)
> p=p.copy(0,0,THUMBNAIL_SIZE,THUMBNAIL_SIZE)
> item.setIcon(QIcon(p))
>
> self.setItem(row,col,item)
>
> class MainWindow(QMainWindow, Ui_MainWindow):
> def __init__(self, parent=None, **kwargs):
> super(MainWindow, self).__init__(parent)
> self.setupUi(self)
>
> centralWidget=QWidget(self)
> l=QVBoxLayout(centralWidget)
>
> self.tableWidget=TableWidget(self)
> l.addWidget(self.tableWidget)
>
> self.setCentralWidget(centralWidget)
>
>
picturesPath=QDesktopServices.storageLocation(QDesktopServices.PicturesLocation)
> pictureDir=QDir(picturesPath)
> pictures=pictureDir.entryList(['*.jpg','*.png','*.gif'])
>
> rowCount=len(pictures)//IMAGES_PER_ROW
> if len(pictures)%IMAGES_PER_ROW: rowCount+=1
> self.tableWidget.setRowCount(rowCount)
>
> row=-1
> for i,picture in enumerate(pictures):
> col=i%IMAGES_PER_ROW
> if not col: row+=1
> self.tableWidget.addPicture(row, col,
> pictureDir.absoluteFilePath(picture))
>
> if __name__=="__main__":
> from sys import argv, exit
>
> a=QApplication(argv)
> m=MainWindow()
> m.show()
> m.raise_()
> exit(a.exec_())
>
> But, it doesn't work. It ignores the form and the two windows go from
side
> to
> side in the frame. When I add buttons, it adds them on TOP of those two
> windows instead of beside them in the empty space....because there is no
> empty
> space.
>
> http://i.imgur.com/ZQfsMDa.png
>
> Please tell me what I'm doing wrong.
It looks like you aren't using a layout to arrange your widgets.
Explicitly specifying geometries is a bad idea.
Phil
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
Re: Using PyQT with QT Designer Phil Thompson <phil@riverbankcomputing.com> - 2013-08-22 09:26 +0100
Re: Using PyQT with QT Designer tausciam@gmail.com - 2013-08-22 18:08 -0700
Re: Using PyQT with QT Designer Phil Thompson <phil@riverbankcomputing.com> - 2013-08-23 08:39 +0100
Re: Using PyQT with QT Designer Michael Staggs <tausciam@gmail.com> - 2013-08-23 08:00 -0500
Re: Using PyQT with QT Designer Phil Thompson <phil@riverbankcomputing.com> - 2013-08-23 18:17 +0100
Re: Using PyQT with QT Designer Michael Staggs <tausciam@gmail.com> - 2013-08-23 12:30 -0500
Re: Using PyQT with QT Designer Phil Thompson <phil@riverbankcomputing.com> - 2013-08-23 18:42 +0100
Re: Using PyQT with QT Designer Michael Staggs <tausciam@gmail.com> - 2013-08-23 12:58 -0500
Re: Using PyQT with QT Designer Michael Staggs <tausciam@gmail.com> - 2013-08-23 13:05 -0500
Re: Using PyQT with QT Designer Dave Angel <davea@davea.name> - 2013-08-23 20:16 +0000
Re: Using PyQT with QT Designer tausciam@gmail.com - 2013-08-23 16:39 -0700
csiph-web