osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A newbie question about using tix


On 2019-05-01 17:44, David Sumbler wrote:
 >
 > On Tue, 2019-04-30 at 20:46 +0100, MRAB wrote:
 > > On 2019-04-30 16:40, David Sumbler wrote:
 > > > Running Ubuntu 18.04, Python 3.6.7, tkinter 8.6
 > > >
 > > > I am very new to tkinter.? The simple program I am writing requires
 > > > a
 > > > user file to be selected before it does anything else, so I would
 > > > like
 > > > a file selection dialog in the main window as soon as the program
 > > > launches.
 > > >
 > > > Tkinter only has askopenfilename(), but this produces a popup
 > > > dialog.
 > > > I can get something like what I want by specifying a small Tk()
 > > > window
 > > > and then calling askopenfilename() so that it covers the root
 > > > window.
 > > >
 > > > It's not ideal, though.? From the documentation I thought that the
 > > > tix
 > > > FileSelectBox would do what I wanted, but I just can't get it to
 > > > work.
 > > >
 > > > If I run:
 > > >
 > > >?????? from tkinter import *
 > > >?????? from tkinter.tix import FileSelectBox
 > > >?????? root = Tk()
 > > >?????? f = FileSelectBox(root)
 > > >
 > > > I get the following:
 > > >
 > > >?????? Traceback (most recent call last):
 > > >???????? File "/home/david/bin/Gradient.py", line 4, in <module>
 > > >?????????? f = FileSelectBox(root)
 > > >???????? File "/usr/lib/python3.6/tkinter/tix.py", line 795, in
 > > > __init__
 > > >?????????? TixWidget.__init__(self, master, 'tixFileSelectBox',
 > > > ['options'], cnf, kw)
 > > >???????? File "/usr/lib/python3.6/tkinter/tix.py", line 311, in
 > > > __init__
 > > >?????????? self.tk.call(widgetName, self._w, *extra)
 > > >?????? _tkinter.TclError: invalid command name "tixFileSelectBox"
 > > >
 > > > I realize that assigning the value of FileSelectBox() isn't going
 > > > to
 > > > give me a filename: I'm just trying to get the basic syntax right
 > > > at
 > > > the moment.
 > > >
 > > > I can't figure out what is wrong though.? Have I have misunderstood
 > > > how
 > > > it should be called, or is there something missing from my system?
 > > >
 > >
 > > For some reason, tix widgets don't work with normal tkinter widgets,
 > > so
 > > you can't put a tix FileSelectBox on a tkinter.Tk widget.
 > >
 > > There is, however, a tix.Tk widget that you can use instead:
 > >
 > > import tkinter.tix as tix
 > > root = tix.Tk()
 > > f = tix.FileSelectBox(root)
 > > f.pack()
 >
 > Thanks for that.
 >
 > When I ran the above, I got:
 >
 >????? Traceback (most recent call last):
 >??????? File "/home/david/bin/GradientProfile_v2.py", line 2, in <module>
 >????????? root = tix.Tk()
 >??????? File "/usr/lib/python3.6/tkinter/tix.py", line 214, in __init__
 >????????? self.tk.eval('package require Tix')
 >????? _tkinter.TclError: can't find package Tix
 >
 > After an internet search, I tried:
 >
 >???? sudo apt install tix-dev tk-dev tk8.6-dev libxft-dev 
libfontconfig1-dev libfreetype6-dev libpng-dev
 >
 > Now when I run the file the program just exits quickly, with no
 > reported errors, but no window(s).? If I add 'root.mainloop()' at the
 > end, I get an empty root window for a fraction of a second, then the
 > program exits with:
 >
 >????? Segmentation fault (core dumped)
 >
 > Any suggestions as to where to go from here?
 >
Tested on Raspbian in a terminal window:

sudo apt-get install tix

python3

import tkinter.tix as tix
root = tix.Tk()
f = tix.FileSelectBox(root)
f.pack()

At this point there's a GUi window filled with a file section box.