classification
Title: IDLE not working correctly on Windows (Py30a2/IDLE30a1)
Type: behavior Stage:
Components: Tkinter Versions: Python 3.0
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: christian.heimes Nosy List: JosephArmbruster, amaury.forgeotdarc, christian.heimes, kbk, mark
Priority: normal Keywords:

Created on 2007-12-12 09:09 by mark, last changed 2010-04-27 20:31 by loewis. This issue is now closed.

Messages (8)
msg58486 - (view) Author: Mark Summerfield (mark) * Date: 2007-12-12 09:09
(1) IDLE starts up on Windows OK, but if I press Alt+F the file menu
comes up giant sized (i.e., each menu entry is almost as tall as the
screen).
(2) If I open a file using Ctrl+O, the Open dialog pops up fine, but
when I select a file and click Open, IDLE crashes.

Oh, and (no version of) IDLE respects the cursor blink setting on Windows.
msg58512 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2007-12-13 01:42
We are aware of several Windows related bugs with IDLE. I assume they
are related to our Tcl/Tk build.
msg58519 - (view) Author: Joseph Armbruster (JosephArmbruster) Date: 2007-12-13 02:32
Tiran, agreed.  You can reproduce this issue quickly outside of IDLE
with this snippet:

from Tkinter import *
import tkMessageBox

class App(Frame):
  def __init__(self, master):
    Frame.__init__(self,master)
    self.master.title("Wierd Menu")
    self.configure(height=200,width=200)
    self.grid(padx=15, pady=15,sticky=N+S+E+W)       
    self.menu = Menu(self)
    self.master.config(menu=self.menu)
    self.tkMenu = Menu(self.menu)
    self.menu.add_cascade(label="MenuItem", menu=self.tkMenu)
    self.tkMenu.add_command(label="Test", command=self.Test)
  def Test(self):
    tkMessageBox.showinfo("Test", "Test")
if __name__ == "__main__":
  root = Tk()
  app = App(root)
  root.mainloop()
msg58715 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2007-12-18 01:34
I found that the huge font in menus is due to an error in the call to
SystemParametersInfo.
Digging more, vc2008 defines WINVER=0x0600, which corresponds to Windows
Vista, and is too high for Windows XP: this value activates the
definition of extra fields in the NONCLIENTMETRICS structure, and
SystemParametersInfo on Windows XP will not accept a sizeof() greater
than expected.

I recompiled tk, adding WINVER=0x500 to the command line:
nmake /f makefile.vc COMPILERFLAGS=-DWINVER=0x0500
And the menu is correctly displayed.
I suggest to add this to the build_tkinter script.
msg58717 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2007-12-18 01:53
Amaury Forgeot d'Arc wrote:
> I found that the huge font in menus is due to an error in the call to
> SystemParametersInfo.
> Digging more, vc2008 defines WINVER=0x0600, which corresponds to Windows
> Vista, and is too high for Windows XP: this value activates the
> definition of extra fields in the NONCLIENTMETRICS structure, and
> SystemParametersInfo on Windows XP will not accept a sizeof() greater
> than expected.

Wow, you are a genius! :)

> I recompiled tk, adding WINVER=0x500 to the command line:
> nmake /f makefile.vc COMPILERFLAGS=-DWINVER=0x0500
> And the menu is correctly displayed.
> I suggest to add this to the build_tkinter script.

Is 0x0500 fine for Windows 2000? Should we add WINVER=0x0500 to the
Python project files, too?

Christian
msg58718 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2007-12-18 02:03
Christian Heimes wrote:
> Is 0x0500 fine for Windows 2000? Should we add WINVER=0x0500 to the
> Python project files, too?

http://msdn2.microsoft.com/en-us/library/aa383745.aspx

Minimum system required 	Minimum value for _WIN32_WINNT and WINVER
Windows Server 2008 	0x0600
Windows Vista 	0x0600
Windows Server 2003 SP1, Windows XP SP2 	0x0502
Windows Server 2003, Windows XP 	0x0501
Windows 2000 	0x0500

0x0500 is fine for Windows 2000.

Should we add something like this to PC/pyconfig.h to ensure that our
build uses only Win2k compatible features and that the user is using at
least 2k to compile Python?

#ifdef WINVER
#  if WINVER < 0x0400
#    error "Windows 2000 or newer is required"
#  endif
#  define WINVER 0x0500
#  define _WIN32_WINNT 0x0500
#endif

Christian
msg58737 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2007-12-18 10:26
I don't think this check is necessary.

Some users may want to target specific windows versions, and compile
their own modules with a higher WINVER.
OTOH, python.org should compile with WINVER=0x0500, so that distributed
binaries can run on most win32 platforms.
msg59019 - (view) Author: Kurt B. Kaiser (kbk) * (Python committer) Date: 2007-12-28 05:13
Assigning to tiran since I'm not building Python on XP.  
Changing to Tkinter, also.  Is the file open bug fixed 
also by the suggested change?
History
Date User Action Args
2010-04-27 20:31:38loewissetpriority: normal
2008-01-06 22:29:44adminsetkeywords: - py3k
versions: Python 3.0
2008-01-05 21:36:08christian.heimessetstatus: open -> closed
resolution: fixed
2007-12-28 05:13:31kbksetassignee: kbk -> christian.heimes
messages: + msg59019
components: + Tkinter, - IDLE
2007-12-18 10:26:44amaury.forgeotdarcsetstatus: pending -> open
resolution: fixed -> (no value)
messages: + msg58737
priority: high -> (no value)
2007-12-18 09:30:48christian.heimessetstatus: open -> pending
priority: high
resolution: fixed
2007-12-18 02:03:33christian.heimessetmessages: + msg58718
2007-12-18 01:53:37christian.heimessetmessages: + msg58717
2007-12-18 01:34:57amaury.forgeotdarcsetnosy: + amaury.forgeotdarc
messages: + msg58715
2007-12-13 02:32:53JosephArmbrustersetnosy: + JosephArmbruster
messages: + msg58519
2007-12-13 01:42:41christian.heimessetnosy: + christian.heimes
messages: + msg58512
2007-12-12 16:51:51kbksetkeywords: + py3k
2007-12-12 15:11:28gvanrossumsetassignee: kbk
nosy: + kbk
2007-12-12 09:09:59markcreate